package com.cms.recursoshumanos.json.object;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.cms.recursoshumanos.cache.MenuComidaCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.object.Comida;
import com.cms.recursoshumanos.object.MenuComida;
import com.cms.recursoshumanos.object.TipoComida;
import com.cms.recursoshumanos.object.TipoMenu;
import com.cms.recursoshumanos.object.list.ListaComida;
import com.cms.recursoshumanos.utilities.Tool;

public class JsonObjectGetComidaComedor 
{

	private static JsonObjectGetComidaComedor _instance = null;
	public static JsonObjectGetComidaComedor getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetComidaComedor();
		
		return _instance;
	}
	private String Result;
	public JsonObjectGetComidaComedor()
	{
	}
	private static final String 
		GETLISTACOMIDACOMEDOR = "GETLISTACOMIDACOMEDOR",
		
		GETLISTACOMIDACOMEDOR_STATUS = "STATUS",
		GETLISTACOMIDACOMEDOR_DATA = "DATA",
		
		GETLISTACOMIDACOMEDOR_DATOS_COMIDA = "DATOS_COMIDA",
		GETLISTACOMIDACOMEDOR_COMIDA_ID = "comida_id",
		GETLISTACOMIDACOMEDOR_NOMBRE_COMIDA = "nombre_comida",
		GETLISTACOMIDACOMEDOR_FOTO_COMIDA = "foto_comida",
		GETLISTACOMIDACOMEDOR_DESCRIPCION_COMIDA = "descripcion_comida",
		GETLISTACOMIDACOMEDOR_TIPO_COMIDA_ID = "tipo_comida_id",
		GETLISTACOMIDACOMEDOR_NOMBRE_TIPO_COMIDA = "nombre_tipo_comida",
		
		GETLISTACOMIDACOMEDOR_DATOS_MENU = "DATOS_MENU",
				
		GETLISTACOMIDACOMEDOR_MENU_DIA_ID = "menu_dia_id",
		GETLISTACOMIDACOMEDOR_FECHA_MENU_DIA = "fecha_menu_dia",
		
		GETLISTACOMIDACOMEDOR_TIPO_MENU_ID = "tipo_menu_id",
		GETLISTACOMIDACOMEDOR_TIPO_MENU_NOMBRE = "tipo_menu_nombre",
		GETLISTACOMIDACOMEDOR_TIPO_MENU_DESCRIPCION = "tipo_menu_descripcion";
	
	
	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if(!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					JSONObject getListaComida = jsonObject.getJSONArray(GETLISTACOMIDACOMEDOR).getJSONObject(0);
					String status = getListaComida.getString(GETLISTACOMIDACOMEDOR_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
		
						MenuComida elMenu = new MenuComida();
						JSONArray data = getListaComida.getJSONArray(GETLISTACOMIDACOMEDOR_DATA);
						
						JSONObject objeto_data = data.getJSONObject(0);
						
						JSONArray datos_menu = objeto_data.getJSONArray(GETLISTACOMIDACOMEDOR_DATOS_MENU);
						
						JSONObject objeto_menu = datos_menu.getJSONObject(0);
						
						elMenu.setMenuId(Integer.parseInt(objeto_menu.getString(GETLISTACOMIDACOMEDOR_MENU_DIA_ID)));
						elMenu.setFechaMenu(Tool.getInstance().parseStringToDate(objeto_menu.getString(GETLISTACOMIDACOMEDOR_FECHA_MENU_DIA)));
						elMenu.setTipoMenu(new TipoMenu(
															Integer.parseInt(objeto_menu.getString(GETLISTACOMIDACOMEDOR_TIPO_MENU_ID)), 
															objeto_menu.getString(GETLISTACOMIDACOMEDOR_TIPO_MENU_NOMBRE), 
															(objeto_menu.getString(GETLISTACOMIDACOMEDOR_TIPO_MENU_DESCRIPCION).equals("null") ?
																	null:
																	objeto_menu.getString(GETLISTACOMIDACOMEDOR_TIPO_MENU_DESCRIPCION))
														)
											);
						
							
						
						
						JSONArray datos_comida = objeto_data.getJSONArray(GETLISTACOMIDACOMEDOR_DATOS_COMIDA);
						ListaComida listado_comida = new ListaComida();
						for (int i = 0; i < datos_comida.length(); i++ )
						{
								JSONObject json_comida = datos_comida.getJSONObject(i);
								
								listado_comida.addComida(new Comida(Integer.parseInt(json_comida.getString(GETLISTACOMIDACOMEDOR_COMIDA_ID)), 
																										json_comida.getString(GETLISTACOMIDACOMEDOR_NOMBRE_COMIDA), 
																										(json_comida.getString(GETLISTACOMIDACOMEDOR_DESCRIPCION_COMIDA).equals("null") ?
																												null :
																												json_comida.getString(GETLISTACOMIDACOMEDOR_DESCRIPCION_COMIDA)	), 
																										new TipoComida(Integer.parseInt(json_comida.getString(GETLISTACOMIDACOMEDOR_TIPO_COMIDA_ID)), 
																														json_comida.getString(GETLISTACOMIDACOMEDOR_NOMBRE_TIPO_COMIDA), 
																														""), 
																										null,
																										Constant.URL_COMIDA+json_comida.getString(GETLISTACOMIDACOMEDOR_COMIDA_ID)+"/"+
																										json_comida.getString(GETLISTACOMIDACOMEDOR_FOTO_COMIDA)));
								
						}

						elMenu.setListaComida(listado_comida);
						MenuComidaCache.getInstance().setMenuComida(elMenu);
						
						
					}
					
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
	
				catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}

	}
	public String getResult()
	{
		return Result;
	}
}


